package saudeAbet.filter;

import javax.servlet.*;
import org.hibernate.SessionFactory;
import saudeAbet.util.HibernateUtil;

public class ConexaoHibernateFilter implements Filter{
	private SessionFactory sf;
	public void init(FilterConfig config) throws ServletException{
		this.sf = HibernateUtil.getSessionFactory();
	}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws ServletException{
	try{
		this.sf = HibernateUtil.getSessionFactory();
		chain.doFilter(servletRequest, servletResponse);
		this.sf.getCurrentSession().getTransaction().commit();
		this.sf.getCurrentSession().close();
	} catch (Throwable ex){
		try{
			if (this.sf.getCurrentSession().getTransaction().isActive()){
				this.sf.getCurrentSession().getTransaction().rollback();
			}
		}catch (Throwable t){
			t.printStackTrace();
		}
		throw new ServletException(ex);
	}
	}
	public void destroy(){}
}
